package com.ewhale.feitengguest.utils.pay;

import android.text.TextUtils;


/**
 * Created by Helen Liu
 * Time :2016/6/21 0021 10:06.
 */
public class PayCallBackEvent {


    private PayType payType;//支付类型
    private String payFlag;//返回的识别信息

    private PayCallBack payCallBack;//支付额外处理

    /**
     *
     * @param payType 支付类型
     * @param payFlag 返回的识别信息
     */
    public PayCallBackEvent(PayType payType, String payFlag) {
        this.payType = payType;
        this.payFlag = payFlag;
    }

    /**
     * 不用做回调处理
     */
    public void payAction() {
        this.payAction(null);
    }

    /**
     * 需要做回调处理，比如跳转之类的
     * @param payCallBack
     */
    public void payAction(PayCallBack payCallBack) {
        this.payCallBack = payCallBack;
        if (TextUtils.isEmpty(payFlag)) {
            return;
        }
        switch (payType) {
            case ALIPAY://支付宝
                if (TextUtils.equals(payFlag, "9000")) {
                    paySuccess();
                } else {
                    // 支付结果resultStatus={4000};memo={系统繁忙，请稍后再试};result={}
                    // 判断resultStatus 为非“9000”则代表可能支付失败
                    // “8000”代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认，最终交易是否成功以服务端异步通知为准（小概率状态）
                    if (TextUtils.equals(payFlag, "8000")) {
//                        BaseApplication.showToast("支付结果确认中");
                    } else if (TextUtils.equals(payFlag, "4000")) {
                        payFail();
                    } else if (TextUtils.equals(payFlag, "6001")) {
                        payCancel();
                    } else if (TextUtils.equals(payFlag, "6002")) {
//                        BaseApplication.showToast("网络连接出错");
                    } else {
                        payFail();
                    }
                }
                break;
            case WXPAY://微信
                if (payFlag.equalsIgnoreCase(WXPayKeys.CALL_BACK_ERR_CODE_SUCCESS)) {
                    paySuccess();
                } else if (payFlag.equalsIgnoreCase(WXPayKeys.CALL_BACK_ERR_CODE_ERROR)) {
                    payFail();
                } else if (payFlag.equalsIgnoreCase(WXPayKeys.CALL_BACK_ERR_CODE_CANCEL)) {
                    payCancel();
                }
                break;
        }
    }

    /**
     * 支付成功
     */
    private void paySuccess() {
//        BaseApplication.showToast("支付成功");
        if (payCallBack != null) {
            payCallBack.onPaySuccess(payType);
        }
    }

    /**
     * 支付失败
     */
    private void payFail() {
//        BaseApplication.showToast("支付失败");
        if (payCallBack != null) {
            payCallBack.onPayFail(payType);
        }
    }

    /**
     * 支付取消
     */
    private void payCancel() {
//        BaseApplication.showToast("取消了支付");
        if (payCallBack != null) {
            payCallBack.onPayCancel(payType);
        }
    }

}
